1. Field of the Invention
The present invention relates to a computer program product, system, and method for concurrently processing parts of cells of a data structure with multiple processes.
2. Description of the Related Art
A bitmap data structure may be used in different computing environments to indicate whether work needs to be performed corresponding to cells or bits in the bitmap set to a certain value. A process may scan the bitmap for a fixed number of bits indicating work to perform, such as set to one, and indicates the work to perform for the located bits on a list so that the work indicated on the list may be later performed. Multiple lists may be crated with fixed number of items of work to perform for each time the process scans the bitmap for cells indicating work to perform. Delays and latency may result from the time required to access the bitmap which may be stored in a slower access storage device requiring the bitmap to be retrieved from the slower access disk and cached, and then the time required to scan the bitmap for entries indicating items of work to perform. If a set bit is found, the work is performed, and the data structure is processed to look for a next set bit until a fixed number of set bits indicating work to perform is processed.
One common use of a bitmap is in data copy or data movement operations. A copy manager program may initialize a bitmap where each cell in the bitmap corresponds to a track or data unit to transfer from a source location to a target location. Once the track is copied, the cell corresponding to the copied track is set to zero to indicate that copying of the track has completed. A bitmap may also be used by a Snapshot or FlashCopy® process, where the cells of the bitmap indicate whether corresponding tracks have been updated, such that the updates need to be mirrored to a remote location. (FlashCopy is a registered trademark of International Business Machines Corporation in the United States and other countries).
There is a need in the art for improved techniques for processing bits or cells in a data structure, such as a bitmap data structure.